<?php

/**
 *定义：在代理模式（Proxy Pattern）中，一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
 *在代理模式中，我们创建具有现有对象的对象，以便向外界提供功能接口。
 */
class ProxyDoctorUser implements User{
    private $user;
    public function __construct(){
        $this->user = new XslUser();
    }
    public function GetUserName(){
        return $this->user->GetUserName();
    }
}

interface User{
    public function GetUserName();
}
class XslUser implements User{
    public function GetUserName(){
        return "杏树林用户张三";
    }
}


function main(ProxyDoctorUser $user){
    echo $user->GetUserName()."\n";
}

$doctorUser = new ProxyDoctorUser();
main($doctorUser);